/*************************************郑州精铖电力设备有限公司*****************************************************
** 通讯实验室-LoRa模块
** 研发部编写，工程专用
** 版权所有，盗版必究
************************************************文件描述***********************************************************
** 文件名：LoRa_App.h
** 描  述：LoRa API函数头文件
**
************************************************历史版本***********************************************************
** 作者：
** 日期：
** 版本：
**
************************************************使用版本***********************************************************
** 作者：李康
** 日期：20191203
** 版本：V1.0
**
**************************************************说明*************************************************************
**LoRa模块复位引脚定义		----->   LoRa_RST
**LoRa模块中断引脚DIO0定义  ----->   LoRa_DIO0
**LoRa模块片选引脚定义		----->   LoRa_CS
**LoRa模块片SPI总线句柄定义 ----->   hspi1
************************************http://www.jingchengdianli.com*************************************************/
#ifndef LORA_APP_H_
#define LORA_APP_H_
/*************************************************库头文件*********************************************************/
#include <LoRa_Dri.h>
#include <LoRa_Reg.h>
#include "string.h"
#include "main.h"
/***********************************************底层驱动库头文件***************************************************/
/**************************************************全局变量********************************************************/

extern SPI_HandleTypeDef hspi1;
#define SpiHandle	hspi1

#define LoRa_OK		0
#define LoRa_ERR    1

#define CS_H() HAL_GPIO_WritePin(LoRa_CS_GPIO_Port,LoRa_CS_Pin,GPIO_PIN_SET)
#define CS_L() HAL_GPIO_WritePin(LoRa_CS_GPIO_Port,LoRa_CS_Pin,GPIO_PIN_RESET)

#define RST_H() HAL_GPIO_WritePin(LoRa_RST_GPIO_Port,LoRa_RST_Pin,GPIO_PIN_SET)
#define RST_L() HAL_GPIO_WritePin(LoRa_RST_GPIO_Port,LoRa_RST_Pin,GPIO_PIN_RESET)

#define ReadDIO0() HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_1)

//定义检测SPI总线值
#define 	CHECK_ERR		1
#define		CHECK_OK		0
#define 	bool 			_Bool
#define 	true 			1
#define 	false 			0
//上层API函数声明

/***************************************************************************
* 函 数 名:  LoRa_Init
* 函数功能:  LoRa模块初始化配置
* 输    入:  无
*
* 输    出:  无
*
* 返    回:  LoRa_OK 挂载成功
*				LoRa_ERR 挂载失败
* 备    注:  无
* 作    者:  李康
* 日	期:  2019-12-03
****************************************************************************/
uint8_t LoRa_Init(void);

/***************************************************************************
* 函 数 名:  LoRaReadBuffer
* 函数功能: 读取 LoRa模块接收到的数据
* 输    入:  pbuf  接收数据存放的地址
*				size接收数据长度存放的地址
* 输    出:  无
*
* 返    回:  LoRa_OK 接收完成
*				LoRa_ERR 接收失败
* 备    注:  无
* 作    者:  李康
* 日	期:  2019-12-03
****************************************************************************/
uint8_t LoRaReadBuffer(uint8_t* pbuf, uint8_t* size);

/***************************************************************************
* 函 数 名:  LoRaSendBuffer
* 函数功能:  LoRa模块发送数据
* 输    入:  pbuf  发送数据存放的地址
*				size 数据长度
* 输    出:  无
*
* 返    回:  LoRa_OK 发送成功
*				LoRa_ERR 发送失败
* 备    注:  无
* 作    者:  李康
* 日	期:  2019-12-03
****************************************************************************/
uint8_t LoRaSendBuffer(uint8_t* pbuf, uint8_t size);

/***************************************************************************
* 函 数 名:  LoRaRxStateEnter
* 函数功能:  LoRa模块进入接收状态
* 输    入:  无
*
* 输    出:  无
*
* 返    回:  无
*
* 备    注:  无
* 作    者:  李康
* 日	期:  2019-12-03
****************************************************************************/
void LoRaRxStateEnter (void);

#endif /* LORA_APP_H_ */
